Code coverage report for src/index.js

Statements: 64.95% (63 / 97)      Branches: 39.53% (17 / 43)      Functions: 64.29% (18 / 28)      Lines: 64.44% (58 / 90)      Ignored: none     

All files » src/ » index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 1841     1   6   1   1 5       5       5   5 5   5 5       5     1   10   16     1   1                                                       1   1           1 1 6   6   6 6   6                                                   6   1 1   1       1 1       1 1 1         1           1   1 8   8 8 8 1     7 5 5         1 2   2 4     2     1 1     1       1     1   1        
System.register(['aurelia-metadata', 'aurelia-loader'], function (_export) {
  'use strict';
 
  var Origin, Loader, polyfilled, sys, defined, modules, DefaultLoader;
 
  function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 
  function _inherits(subClass, superClass) { Iif (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); Eif (superClass) subClass.__proto__ = superClass; }
 
  function ensureOriginOnExports(executed, name) {
    var target = executed,
        key,
        exportedValue;
 
    Iif (target.__useDefault) {
      target = target['default'];
    }
 
    Origin.set(target, new Origin(name, 'default'));
 
    for (key in target) {
      exportedValue = target[key];
 
      Eif (typeof exportedValue === 'function') {
        Origin.set(exportedValue, new Origin(name, key));
      }
    }
 
    return executed;
  }
 
  return {
    setters: [function (_aureliaMetadata) {
      Origin = _aureliaMetadata.Origin;
    }, function (_aureliaLoader) {
      Loader = _aureliaLoader.Loader;
    }],
    execute: function () {
      polyfilled = false;
 
      Iif (!window.System || !window.System['import']) {
        sys = window.System = window.System || {};
 
        sys.polyfilled = polyfilled = true;
        sys.map = {};
 
        sys['import'] = function (moduleId) {
          return new Promise(function (resolve, reject) {
            require([moduleId], resolve, reject);
          });
        };
 
        sys.normalize = function (url) {
          return Promise.resolve(url);
        };
 
        if (window.requirejs && requirejs.s && requirejs.s.contexts && requirejs.s.contexts._ && requirejs.s.contexts._.defined) {
          defined = requirejs.s.contexts._.defined;
 
          sys.forEachModule = function (callback) {
            for (var key in defined) {
              callback(key, defined[key]);
            }
          };
        } else {
          sys.forEachModule = function (callback) {};
        }
      } else {
        modules = System._loader.modules;
 
        System.forEachModule = function (callback) {
          for (var key in modules) {
            callback(key, modules[key].module);
          }
        };
      }
      DefaultLoader = (function (_Loader) {
        function DefaultLoader() {
          _classCallCheck(this, DefaultLoader);
 
          _Loader.call(this);
 
          this.moduleRegistry = {};
          var that = this;
 
          Iif (polyfilled) {
            define('view', [], {
              'load': function load(name, req, onload, config) {
                var entry = that.getOrCreateTemplateRegistryEntry(name),
                    address;
 
                if (entry.templateIsLoaded) {
                  onload(entry);
                  return;
                }
 
                that.findBundledTemplate(name, entry).then(function (found) {
                  if (found) {
                    onload(entry);
                  } else {
                    address = req.toUrl(name);
 
                    that.importTemplate(address).then(function (template) {
                      entry.setTemplate(template);
                      onload(entry);
                    });
                  }
                });
              }
            });
          } else {
            System.set('view', System.newModule({
              'fetch': function fetch(load, _fetch) {
                var id = load.name.substring(0, load.name.indexOf('!'));
                var entry = load.metadata.templateRegistryEntry = that.getOrCreateTemplateRegistryEntry(id);
 
                Iif (entry.templateIsLoaded) {
                  return '';
                }
 
                return that.findBundledTemplate(load.name, entry).then(function (found) {
                  Iif (found) {
                    return '';
                  }
 
                  return that.importTemplate(load.address).then(function (template) {
                    entry.setTemplate(template);
                    return '';
                  });
                });
              },
              'instantiate': function instantiate(load) {
                return load.metadata.templateRegistryEntry;
              }
            }));
          }
        }
 
        _inherits(DefaultLoader, _Loader);
 
        DefaultLoader.prototype.loadModule = function loadModule(id) {
          var _this = this;
 
          return System.normalize(id).then(function (newId) {
            var existing = _this.moduleRegistry[newId];
            if (existing) {
              return existing;
            }
 
            return System['import'](newId).then(function (m) {
              _this.moduleRegistry[newId] = m;
              return ensureOriginOnExports(m, newId);
            });
          });
        };
 
        DefaultLoader.prototype.loadAllModules = function loadAllModules(ids) {
          var loads = [];
 
          for (var i = 0, ii = ids.length; i < ii; ++i) {
            loads.push(this.loadModule(ids[i]));
          }
 
          return Promise.all(loads);
        };
 
        DefaultLoader.prototype.loadTemplate = function loadTemplate(url) {
          return polyfilled ? System['import']('view!' + url) : System['import'](url + '!view');
        };
 
        DefaultLoader.prototype.loadText = function loadText(url) {
          return polyfilled ? System['import']('text!' + url) : System['import'](url + '!text');
        };
 
        return DefaultLoader;
      })(Loader);
 
      _export('DefaultLoader', DefaultLoader);
 
      window.AureliaLoader = DefaultLoader;
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2xvYWRlci1kZWZhdWx0L3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7c0JBR0ksVUFBVSxFQUdSLEdBQUcsRUFnQkQsT0FBTyxFQVVULE9BQU8sRUE4QkEsYUFBYTs7Ozs7O0FBckIxQixXQUFTLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7QUFDNUMsUUFBSSxNQUFNLEdBQUcsUUFBUTtRQUNqQixHQUFHO1FBQUUsYUFBYSxDQUFDOztBQUV2QixRQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUM7QUFDckIsWUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUM1Qjs7QUFFRCxVQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzs7QUFFaEQsU0FBSyxHQUFHLElBQUksTUFBTSxFQUFFO0FBQ2xCLG1CQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUU1QixVQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsRUFBRTtBQUN2QyxjQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztPQUNsRDtLQUNGOztBQUVELFdBQU8sUUFBUSxDQUFDO0dBQ2pCOzs7O2dDQTVETyxNQUFNOzs4QkFDTixNQUFNOzs7QUFFVixnQkFBVSxHQUFHLEtBQUs7O0FBRXRCLFVBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sVUFBTyxFQUFDO0FBQ3JDLFdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRTs7QUFFN0MsV0FBRyxDQUFDLFVBQVUsR0FBRyxV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LE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLFVBQU8sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDakY7O2VBMUZVLGFBQWE7U0FBUyxNQUFNOzsrQkFBNUIsYUFBYTs7QUE2RjFCLFlBQU0sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2xvYWRlci1kZWZhdWx0L3NyYy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3JpZ2lufSBmcm9tICdhdXJlbGlhLW1ldGFkYXRhJztcbmltcG9ydCB7TG9hZGVyfSBmcm9tICdhdXJlbGlhLWxvYWRlcic7XG5cbnZhciBwb2x5ZmlsbGVkID0gZmFsc2U7XG5cbmlmKCF3aW5kb3cuU3lzdGVtIHx8ICF3aW5kb3cuU3lzdGVtLmltcG9ydCl7XG4gIHZhciBzeXMgPSB3aW5kb3cuU3lzdGVtID0gd2luZG93LlN5c3RlbSB8fCB7fTtcblxuICBzeXMucG9seWZpbGxlZCA9IHBvbHlmaWxsZWQgPSB0cnVlO1xuICBzeXMubWFwID0ge307XG5cbiAgc3lzWydpbXBvcnQnXSA9IGZ1bmN0aW9uKG1vZHVsZUlkKXtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVxdWlyZShbbW9kdWxlSWRdLCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9O1xuXG4gIHN5cy5ub3JtYWxpemUgPSBmdW5jdGlvbih1cmwpe1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodXJsKTtcbiAgfTtcblxuICBpZih3aW5kb3cucmVxdWlyZWpzICYmIHJlcXVpcmVqcy5zICYmIHJlcXVpcmVqcy5zLmNvbnRleHRzICYmIHJlcXVpcmVqcy5zLmNvbnRleHRzLl8gJiYgcmVxdWlyZWpzLnMuY29udGV4dHMuXy5kZWZpbmVkKSB7XG4gICAgdmFyIGRlZmluZWQgPSByZXF1aXJlanMucy5jb250ZXh0cy5fLmRlZmluZWQ7XG4gICAgc3lzLmZvckVhY2hNb2R1bGUgPSBmdW5jdGlvbihjYWxsYmFjayl7XG4gICAgICBmb3IodmFyIGtleSBpbiBkZWZpbmVkKXtcbiAgICAgICAgY2FsbGJhY2soa2V5LCBkZWZpbmVkW2tleV0pO1xuICAgICAgfVxuICAgIH07XG4gIH1lbHNle1xuICAgIHN5cy5mb3JFYWNoTW9kdWxlID0gZnVuY3Rpb24oY2FsbGJhY2spe307XG4gIH1cbn1lbHNle1xuICB2YXIgbW9kdWxlcyA9IFN5c3RlbS5fbG9hZGVyLm1vZHVsZXM7XG5cbiAgU3lzdGVtLmZvckVhY2hNb2R1bGUgPSBmdW5jdGlvbihjYWxsYmFjayl7XG4gICAgZm9yICh2YXIga2V5IGluIG1vZHVsZXMpIHtcbiAgICAgIGNhbGxiYWNrKGtleSwgbW9kdWxlc1trZXldLm1vZHVsZSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbnN1cmVPcmlnaW5PbkV4cG9ydHMoZXhlY3V0ZWQsIG5hbWUpe1xuICB2YXIgdGFyZ2V0ID0gZXhlY3V0ZWQsXG4gICAgICBrZXksIGV4cG9ydGVkVmFsdWU7XG5cbiAgaWYodGFyZ2V0Ll9fdXNlRGVmYXVsdCl7XG4gICAgdGFyZ2V0ID0gdGFyZ2V0WydkZWZhdWx0J107XG4gIH1cblxuICBPcmlnaW4uc2V0KHRhcmdldCwgbmV3IE9yaWdpbihuYW1lLCAnZGVmYXVsdCcpKTtcblxuICBmb3IgKGtleSBpbiB0YXJnZXQpIHtcbiAgICBleHBvcnRlZFZhbHVlID0gdGFyZ2V0W2tleV07XG5cbiAgICBpZiAodHlwZW9mIGV4cG9ydGVkVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgT3JpZ2luLnNldChleHBvcnRlZFZhbHVlLCBuZXcgT3JpZ2luKG5hbWUsIGtleSkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleGVjdXRlZDtcbn1cblxuZXhwb3J0IGNsYXNzIERlZmF1bHRMb2FkZXIgZXh0ZW5kcyBMb2FkZXIge1xuICBjb25zdHJ1Y3Rvcigpe1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLm1vZHVsZVJlZ2lzdHJ5ID0ge307XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gICAgaWYocG9seWZpbGxlZCl7XG4gICAgICBkZWZpbmUoJ3ZpZXcnLCBbXSwge1xuICAgICAgICAnbG9hZCc6IGZ1bmN0aW9uIChuYW1lLCByZXEsIG9ubG9hZCwgY29uZmlnKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gdGhhdC5nZXRPckNyZWF0ZVRlbXBsYXRlUmVnaXN0cnlFbnRyeShuYW1lKSxcbiAgICAgICAgICAgICAgYWRkcmVzcztcblxuICAgICAgICAgIGlmKGVudHJ5LnRlbXBsYXRlSXNMb2FkZWQpe1xuICAgICAgICAgICAgb25sb2FkKGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGF0LmZpbmRCdW5kbGVkVGVtcGxhdGUobmFtZSwgZW50cnkpLnRoZW4oZm91bmQgPT4ge1xuICAgICAgICAgICAgaWYoZm91bmQpe1xuICAgICAgICAgICAgICBvbmxvYWQoZW50cnkpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGFkZHJlc3MgPSByZXEudG9VcmwobmFtZSk7XG5cbiAgICAgICAgICAgICAgdGhhdC5pbXBvcnRUZW1wbGF0ZShhZGRyZXNzKS50aGVuKHRlbXBsYXRlID0+IHtcbiAgICAgICAgICAgICAgICBlbnRyeS5zZXRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgb25sb2FkKGVudHJ5KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1lbHNle1xuICAgICAgU3lzdGVtLnNldCgndmlldycsIFN5c3RlbS5uZXdNb2R1bGUoe1xuICAgICAgICAnZmV0Y2gnOiBmdW5jdGlvbihsb2FkLCBmZXRjaCkge1xuICAgICAgICAgIHZhciBpZCA9IGxvYWQubmFtZS5zdWJzdHJpbmcoMCwgbG9hZC5uYW1lLmluZGV4T2YoJyEnKSk7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gbG9hZC5tZXRhZGF0YS50ZW1wbGF0ZVJlZ2lzdHJ5RW50cnkgPSB0aGF0LmdldE9yQ3JlYXRlVGVtcGxhdGVSZWdpc3RyeUVudHJ5KGlkKTtcblxuICAgICAgICAgIGlmKGVudHJ5LnRlbXBsYXRlSXNMb2FkZWQpe1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGF0LmZpbmRCdW5kbGVkVGVtcGxhdGUobG9hZC5uYW1lLCBlbnRyeSkudGhlbihmb3VuZCA9PiB7XG4gICAgICAgICAgICBpZihmb3VuZCl7XG4gICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoYXQuaW1wb3J0VGVtcGxhdGUobG9hZC5hZGRyZXNzKS50aGVuKHRlbXBsYXRlID0+IHtcbiAgICAgICAgICAgICAgZW50cnkuc2V0VGVtcGxhdGUodGVtcGxhdGUpO1xuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgJ2luc3RhbnRpYXRlJzpmdW5jdGlvbihsb2FkKSB7XG4gICAgICAgICAgcmV0dXJuIGxvYWQubWV0YWRhdGEudGVtcGxhdGVSZWdpc3RyeUVudHJ5O1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZE1vZHVsZShpZCl7XG4gICAgcmV0dXJuIFN5c3RlbS5ub3JtYWxpemUoaWQpLnRoZW4obmV3SWQgPT4ge1xuICAgICAgdmFyIGV4aXN0aW5nID0gdGhpcy5tb2R1bGVSZWdpc3RyeVtuZXdJZF07XG4gICAgICBpZihleGlzdGluZyl7XG4gICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFN5c3RlbS5pbXBvcnQobmV3SWQpLnRoZW4obSA9PiB7XG4gICAgICAgIHRoaXMubW9kdWxlUmVnaXN0cnlbbmV3SWRdID0gbTtcbiAgICAgICAgcmV0dXJuIGVuc3VyZU9yaWdpbk9uRXhwb3J0cyhtLCBuZXdJZCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRBbGxNb2R1bGVzKGlkcyl7XG4gICAgdmFyIGxvYWRzID0gW107XG5cbiAgICBmb3IodmFyIGkgPSAwLCBpaSA9IGlkcy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGxvYWRzLnB1c2godGhpcy5sb2FkTW9kdWxlKGlkc1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChsb2Fkcyk7XG4gIH1cblxuICBsb2FkVGVtcGxhdGUodXJsKXtcbiAgICByZXR1cm4gcG9seWZpbGxlZCA/IFN5c3RlbS5pbXBvcnQoJ3ZpZXchJyArIHVybCkgOiBTeXN0ZW0uaW1wb3J0KHVybCArICchdmlldycpO1xuICB9XG5cbiAgbG9hZFRleHQodXJsKXtcbiAgICByZXR1cm4gcG9seWZpbGxlZCA/IFN5c3RlbS5pbXBvcnQoJ3RleHQhJyArIHVybCkgOiBTeXN0ZW0uaW1wb3J0KHVybCArICchdGV4dCcpO1xuICB9XG59XG5cbndpbmRvdy5BdXJlbGlhTG9hZGVyID0gRGVmYXVsdExvYWRlcjtcbiJdfQ==